import { defineStore } from 'pinia';
import { ref } from 'vue';

/* 用户信息数据类型 */
export interface UserInfo {
  user_id: number;//用户id  
  account: string;//用户名
  account_name: string;//用户昵称
  email: string;//邮箱
  bind_mobil_phone: string;//绑定手机号
  mobile_phone: string;//手机号
  bind_google_validate: string;//绑定谷歌验证
  token: string | null;//token
  buttons_list: MenuItem[] | null;//按钮列表
  menu_list: MenuItem[] | null;//菜单列表
}

/* 用户信息中（菜单、按钮） 数据类型 */
export interface MenuItem {
  module_id: number;//菜单ID
  module_name: string;//菜单名称
  module_icon: string;//菜单图标
  module_link : string;//菜单链接
  module_path: string;//菜单路径
  module_sort: number;//菜单排序
  module_parent_id: number;//菜单父级ID
}

/* 初始化用户信息 */
const initUserInfo: UserInfo = {
    user_id: 0,
    account: '',
    account_name: '',
    email: '',
    bind_mobil_phone: '',
    mobile_phone: '',
    bind_google_validate: '',
    token: null,
    buttons_list: [], //用于权限校验
    menu_list: [] //用于路由生成、菜单生成、权限校验
}
/* 用户信息存储 */
export const UserInfoStore = defineStore('userInfo', () => {
    const userInfo = ref<UserInfo>({
        ...initUserInfo,
    });
    function setUserInfo(data: UserInfo) {
        userInfo.value = data;
    } 

    return {
        userInfo,
        setUserInfo,
    };
});